--
-- La funcion col_and_tipo devuelve una cadena de columnas con su tipo de una tabla 
-- que se utiliza para mapear registros en los procesos especiales que usan dblink
-- y podría usarse en otros mapeos que reciben set of de funciones
--


CREATE OR REPLACE FUNCTION public.col_and_tipo(
	character varying)
    RETURNS character varying
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
AS $BODY$
DECLARE
TABLA    ALIAS FOR $1;
LISTA    VARCHAR;
COLUMNA  VARCHAR;
MiCURSOR REFCURSOR;
BEGIN
LISTA   := '';
COLUMNA := '';

TABLA := lower(TABLA);

OPEN MiCURSOR FOR 
SELECT column_name || ' ' || data_type FROM information_schema.columns WHERE table_name = TABLA and
table_schema = 'public' ORDER BY ordinal_position;
LOOP
FETCH MiCURSOR INTO COLUMNA;
EXIT WHEN (NOT FOUND);
IF LISTA = '' THEN
LISTA := LISTA || COLUMNA;
ELSE
LISTA := LISTA || ', ' || COLUMNA;	
END IF;       
END LOOP;
CLOSE MiCURSOR;
RETURN LISTA;
END;
$BODY$;

ALTER FUNCTION public.col_and_tipo(character varying)
    OWNER TO abacouser;
    
--    
SELECT aaversion('508.05','508.04');
--    
